package com.example.cloud_disk.service;


import cn.mybatis.mp.core.mybatis.mapper.context.Pager;
import com.example.cloud_disk.dto.*;
import com.example.cloud_disk.entity.Files;
import com.example.cloud_disk.entity.Users;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.net.URISyntaxException;

public interface UsersService {

    /**
     * 创建单个用户
     *
     * @param userDTO
     */
    String saveUser(UserDTO userDTO) throws URISyntaxException, IOException, InterruptedException;

    /**
     * 通过用户上传的Excel或csv文件批量注册用户
     *
     * @param file
     * @param fileType
     * @return
     */
    String saveUsers(MultipartFile file, String fileType);

    /**
     * 修改用户账号状态
     *
     * @param id
     * @return
     */
    String upDataUserStatus(Integer id);

    /**
     * 用户登录
     *
     * @param userLoginDTO
     * @return
     */
    String login(UserLoginDTO userLoginDTO);

    /**
     * 文件上传
     *
     * @param file
     * @return
     */
    String upFiles(MultipartFile file) throws InterruptedException, IOException, URISyntaxException;

    /**
     * 用户文件分页查询
     *
     * @return
     */
    Pager<Files> getPageUsersFile(GetFilesPageDTO getFilesPageDTO);

    /**
     * 用户账号分页及模糊查询
     *
     * @param getUsersPageDTO
     * @return
     */
    Pager<Users> getAllUsersPage(GetUsersPageDTO getUsersPageDTO);

    /**
     * 用户修改基本信息
     *
     * @param upDataUser
     * @param token
     * @return
     */
    String upDataUser(UpDataUser upDataUser, String token);

    /**
     * 用户文件下载
     *
     * @param id
     * @return
     */
    String fileDown(String id) throws URISyntaxException, IOException;

    /**
     * 用户文件删除
     *
     * @param id
     * @return
     */
    String fileDel(String id) throws IOException, InterruptedException;

    /**
     * 用户账户删除
     *
     * @param id
     * @return
     */
    String deleteUser(Integer id) throws IOException, InterruptedException;

    /**
     * 用户修改密码
     *
     * @param putPassword
     * @param token
     * @return
     */
    String putUserPassword(PutPassword putPassword, String token);
}
